home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / ForCLI / 0Utils13.lha / 0Utils / test.c < prev    next >
C/C++ Source or Header  |  1995-03-25  |  3KB  |  146 lines

  1.  
  2. /******************************************************************************
  3.  
  4.     MODULE
  5.     Test.c
  6.  
  7.     DESCRIPTION
  8.     Test
  9.  
  10.     NOTES
  11.     Kickstart 2.0+ required
  12.     compiles w/ SAS/C v6.51
  13.  
  14.     BUGS
  15.     none known
  16.  
  17.     TODO
  18.  
  19.     EXAMPLES
  20.  
  21.     SEE ALSO
  22.  
  23.     INDEX
  24.  
  25.     HISTORY
  26.     25-03-95 b_noll created
  27.  
  28.     AUTHOR
  29.     Bernd Noll, Brunnenstrasse 55, D-67661 Kaiserslautern
  30.     b_noll@informatik.uni-kl.de
  31.  
  32. ******************************************************************************/
  33.  
  34. /**************************************
  35.         Includes
  36. **************************************/
  37.  
  38. #ifndef   EXEC_LIBRARIES_H
  39. # include <exec/libraries.h>
  40. #endif /* EXEC_LIBRARIES_H */
  41.  
  42. #ifndef   CLIB_EXEC_PROTOS_H
  43. # include <clib/exec_protos.h>
  44. #endif /* CLIB_EXEC_PROTOS_H */
  45.  
  46. #ifndef   DOS_DOS_H
  47. # include <dos/dos.h>
  48. #endif /* DOS_DOS_H */
  49.  
  50. #ifndef   CLIB_DOS_PROTOS_H
  51. # include <clib/dos_protos.h>
  52. #endif /* CLIB_DOS_PROTOS_H */
  53.  
  54. #include <proto/dos.h>
  55. #include <proto/exec.h>
  56.  
  57. /**************************************
  58.      Defines & Structures
  59. **************************************/
  60.  
  61. #ifndef ABSEXECBASE
  62. #define ABSEXECBASE ((struct ExecBase **)4L)
  63. #endif
  64.  
  65. struct _arg {
  66. /* ******************** USER FORMAT ******************** */
  67. #define FORMAT "PATH/A"
  68.  
  69.     STRPTR path;
  70.  
  71. /* ******************** USER FORMAT ******************** */
  72. }; /* struct _argv */
  73.  
  74. #define MAXPATHLEN 256
  75. #define MAXLINELEN 256
  76.  
  77. #define VERSIONPREFIX    "\0$VER: "
  78. #define VERSIONOFFSET    0
  79. #define FORMATPREFIX    "\0$ARG: "
  80. #define FORMATOFFSET    7
  81.  
  82. /**************************************
  83.         Implementation
  84. **************************************/
  85.  
  86. long _main (void)
  87. {
  88.     const char* version = VERSIONPREFIX "Test 1.1 " __AMIGADATE__  + VERSIONOFFSET;
  89.     long retval = RETURN_FAIL;
  90.     struct ExecBase*SysBase = *ABSEXECBASE;
  91.     struct Library* DOSBase;
  92.  
  93.     if (DOSBase = OpenLibrary (DOSNAME, 37)) {
  94.     struct _arg argv = { 0 };
  95.     APTR   args;
  96.     retval     = RETURN_ERROR;
  97.     if (args = (void*)ReadArgs(FORMATPREFIX FORMAT + FORMATOFFSET, (LONG*)&argv, NULL)) {
  98.  
  99. /* ******************** USER BODY ******************** */
  100.         {
  101.         BPTR lock;
  102.         retval = 0;
  103.  
  104.         PutStr ("Start\n");
  105.  
  106.         if (lock = Lock(argv.path, SHARED_LOCK)) {
  107.             BPTR locks[20];
  108.             int i = 0;
  109.  
  110.             PrintFault(IoErr(), "Test/Lock");
  111.             SetIoErr(0);
  112.  
  113.             while (locks[i++] = lock) {
  114.             lock = ParentDir(lock);
  115.             PrintFault(IoErr(), "Test/Parent");
  116.             SetIoErr(0);
  117.             } /* while */
  118.  
  119.             while (--i > 0) {
  120.             if (locks[i])
  121.                 UnLock ( locks[i]);
  122.             PrintFault(IoErr(), "Test/Unlk");
  123.             SetIoErr(0);
  124.             } /* while */
  125.  
  126.             UnLock(locks[0]);
  127.         } /* if */
  128.         }
  129. /* ******************** USER BODY ******************** */
  130.         FreeArgs (args);
  131.     } /* if */
  132.  
  133.     if (retval > RETURN_WARN)
  134.         PrintFault(IoErr(), "Test");
  135.  
  136.     CloseLibrary (DOSBase);
  137.     } /* if */
  138.     return (retval);
  139. } /* _main */
  140.  
  141. /******************************************************************************
  142. *****  END Test.c
  143. ******************************************************************************/
  144.  
  145.  
  146.